# -*- coding: utf-8 -*-
"""
MES业务应用配置
逐步启用MES系统的核心业务功能
"""
import os
import sys

# 基础路径配置
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
BASE_DIR = PROJECT_ROOT

# 添加项目路径
THIRD_PARTY_ROOT = os.path.join(PROJECT_ROOT, "thirdparty")
THEME_ROOT = os.path.join(PROJECT_ROOT, "theme")
sys.path.insert(0, THIRD_PARTY_ROOT)
sys.path.insert(0, THEME_ROOT)

# 导入兼容性补丁
try:
    import compatibility_patch
except ImportError:
    pass

# 调试模式
DEBUG = True
ALLOWED_HOSTS = ['*']

# 密钥
SECRET_KEY = 'your-secret-key-here-change-in-production'

# 应用列表
INSTALLED_APPS = [
    # Django核心应用
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    
    # 第三方应用（核心）
    'crispy_forms',
    
    # MES核心业务应用
    'apps.productcatalog',      # 产品目录
    'apps.customer',            # 客户管理
    'apps.warehouse',           # 仓库管理
    'apps.material',            # 物料管理
    'apps.device',              # 设备管理
    'apps.person',              # 人员管理
    'apps.technologies',        # 工艺管理
    'apps.manufactureplan',     # 制造计划
    'apps.quality',             # 质量管理
    'apps.report',              # 报表管理
    
    # 工具类应用
    'apps.yt_object',           # 对象基类
    'apps.yt_barcode',          # 条码管理
    'apps.yt_file',             # 文件管理
    'apps.yt_log',              # 日志管理
    'apps.yt_report',           # 报表工具
    
    # 主题应用
    '201504',                   # 主题
]

# 中间件
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

# URL配置
ROOT_URLCONF = 'urls'

# 模板配置
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(BASE_DIR, 'templates'),
            os.path.join(BASE_DIR, 'theme', '201504', 'templates'),
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'django.template.context_processors.media',
                'django.template.context_processors.static',
            ],
        },
    },
]

# 数据库配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'dev.db'),
    }
}

# 国际化
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = True

# 静态文件配置
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = []

# 检查主题静态文件目录是否存在
theme_static_dir = os.path.join(BASE_DIR, 'theme', '201504', 'static')
if os.path.exists(theme_static_dir):
    STATICFILES_DIRS.append(theme_static_dir)

# 媒体文件配置
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

# 认证配置
AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',
]

# 日志配置
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
        'file': {
            'class': 'logging.FileHandler',
            'filename': os.path.join(BASE_DIR, 'logs', 'django.log'),
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console', 'file'],
            'level': 'INFO',
        },
        'apps': {
            'handlers': ['console', 'file'],
            'level': 'DEBUG',
        },
    },
}

# 确保日志目录存在
log_dir = os.path.join(BASE_DIR, 'logs')
if not os.path.exists(log_dir):
    os.makedirs(log_dir)

# 默认主键字段类型
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

# Crispy Forms配置
CRISPY_TEMPLATE_PACK = 'bootstrap3'

# 文件上传配置
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440  # 2.5 MB
FILE_UPLOAD_TEMP_DIR = os.path.join(BASE_DIR, 'tmp')

# 确保临时目录存在
if not os.path.exists(FILE_UPLOAD_TEMP_DIR):
    os.makedirs(FILE_UPLOAD_TEMP_DIR) 